home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
eulisp
/
feel0_89.lha
/
Feel
/
Src
/
Makefile
< prev
next >
Wrap
Makefile
|
1993-07-23
|
10KB
|
360 lines
# ###################################################################### #
# The FEEL makefile... #
# ###################################################################### #
#
# $Id: Makefile,v 1.9 1992/11/26 16:55:33 pab Exp $
#
##########################################################################
# Customisation section... #
##########################################################################
# Edit the following for your favourite machine.
# Where Src directory lives
BASE = /net/brad/opt/home/pab/Feel
# Feel knows about the systems below:
# Stardent RS6000 Gould Sun4 Sun3 Clipper Vax Alliant Meiko 386
# Here is some info in case you have something different:
# WITH_SYSTEMV_SOCKETS - System V IP communication
# WITH_BSD_SOCKETS - BSD IP communication (4.3, or see defs.h)
# WITH_SYSTEMV_SIGNALS - System V signalling
# WITH_BSD_SIGNALS - BSD signalling
# DONT_HAVE_STDLIB_H - half-hearted ANSI without stdlib.h
# ALIGN8 - if the machine is fussy about 8 byte alignments, e.g., doubles
# TRAP_ALL - vauge attempt to catch segvs, buses, etc. implied by
# MACHINE=SYSTEMV
# Architecture and machine type...
# MACHINE is ANY,BSD or SystemV.
# ANY is any 'reasonable' architecture --- things that run UNIX, and many others
# BSD is supported on any machine with a *-swch.s file in this
# directory. See the note in the manual for what it does, and how to port it.
# SystemV is for sun3/4, Stardents and Alliant concentrix machines
# It ought to work for any UNIX machine that has shared memory primitives
# and that BSD config. works for.
# BTW, BSD works on MSDOS boxes(!)
# Systems not listed but have worked in the 'ANY' config:
# DEC MIPS (try hacking the ard-swch code for BSD version)
#
# Extra goodies, won't necesarily work
# -DBCI Want a bytecode interpreter?
# -DLOWTAGINTS Low tag integers kind of work,
# but break the addons code (and maybe other things)
# READLINE - used to work. Bit rot may have set in here.
# common options
# how to optimise your code
STDOFLAGS =
# everybody needs these
STDFLAGS = -DWITH_FUDGE
CPP = cc -E
#
# Stardent
SYSFLAGS = -DWITH_SYSTEMV_SOCKETS \
-DDONT_HAVE_STDLIB_H -DBCI
OFLAGS =-O -inline
MACHINE = BSD # Can be SYSTEMV
ARCH = ard#a43
CC = cc
LIBS = -lm
# Norcroft-stardent
#SYSFLAGS = -DBCI -DNEWTELOS -DNORCROFT -DDEBUG
#OFLAGS = #-O -inline
#MACHINE = ANY #BSD # Can be SYSTEMV
#ARCH = ard#a43
#CC = /net/brad/denton_export/users/jpff/Norcroft/ncc.mips2 -I/net/brad/denton_export/users/jpff/ncc.include
#LIBS =
# Iris
#SYSFLAGS = -DWITH_SYSTEMV_SOCKETS \
# -DBCI -D__STDC__ -DUNSIGNED_CHARS
#OFLAGS = -g -p
#MACHINE = BSD # BSD # Can be SYSTEMV
#ARCH = irx
#CC = cc #-43
#LIBS = -lm
#LINKFLAGS=-p
# Sun4
#SYSFLAGS = -DWITH_SYSTEMV_SOCKETS -DWITH_BSD_SIGNALS -DBCI -DALIGN8
#OFLAGS = -O2
#MACHINE = BSD #BSD #or SYSTEMV, for the keen
#ARCH = sun4
#CC = gcc
#LIBS = -lm
# RS6000
#SYSFLAGS = -DWITH_SYSTEMV_SOCKETS \
# -DWITH_SYSTEMV_SIGNALS -DTRAP_ALL -D_ALL_SOURCE
#MACHINE = ANY
#ARCH = any
#CC = xlc
#LIBS = -lm
# Gould
#SYSFLAGS = -DWITH_BSD_SIGNALS \
# -DDONT_HAVE_STDLIB_H -DALIGN8
#MACHINE = ANY
#ARCH = any
#CC = gcc
#LIBS = -lm
# Sun3
#SYSFLAGS = -DWITH_SYSTEMV_SOCKETS -DDONT_HAVE_STDLIB_H -DWITH_BSD_SIGNALS
#MACHINE = BSD
#ARCH = sun3
#CC = gcc
#LIBS = -lm
# Clipper
#SYSFLAGS = -DWITH_BSD_SIGNALS -DALIGN8
#MACHINE = BSD
#ARCH = clip
#CC = ncc
#LIBS = /lib/crt0.o
# Vax
#SYSFLAGS = -mg -O -DDONT_HAVE_STDLIB_H -DBCI
#MACHINE = ANY
#ARCH = any
#CC = gcc
#LIBS = -lmg
# Alliant
#SYSFLAGS = -DWITH_BSD_SIGNALS -DWITH_BSD_SOCKETS -DALIGN8
#MACHINE = SYSTEMV
#ARCH = i860
#CC = fxc
#LIBS = -lm
# Meiko
# SYSFLAGS =
# MACHINE = ANY
# CC = mcc
# LIBS = -lm
# EXTRASRCS =
# EXTRAOBJS =
# 386 [Should work for linux]
# ...
#SYSFLAGS = -DWITH_SYSTEMV_SOCKETS \
# -DDONT_HAVE_STDLIB_H -DBCI -DUNSIGNED_CHARS
#OFLAGS = -O
#MACHINE = BSD
#ARCH = 386
#CC = gcc #-43
#LIBS = -lm
# i860
# Not an alliant?
# Try MACHINE=BSD, then change the shared memory primitives around
#
# ################################################################### #
# Sundry constants #
# ################################################################### #
LEX = flex
YACC = bison -y -t
# Local module path
MODULE_PATH = ${BASE}/Modules/
# Semaphoring...
# Hardware semaphores are OK, but
SEMAPHORES = SOFTWARE
# Do the business...
# ###################################################################### #
# Working section... #
# ###################################################################### #
LOAD_PATH_NAME = FEEL_LOAD_PATH
MACHINEABBREV = ${ARCH}
DATE = `date`
# invent flags
FLAGS = ${STDFLAGS} ${STDOFLAGS} ${SYSFLAGS} ${OFLAGS}
BCIOPTFLAGS = -O -inline
# Reader specific sources...
READERSOURCES = reader.c feelflex.lex feelflex.skl
READERIMMOBJS = lex.yy.c
READEROBJECTS = lex.yy.o reader.o
# Default Elvira sources...
ELVIRASOURCES = initelv.c
ELVIRAOBJECTS = initelv.o
# Garbage collector sources
GCOBJECTS = ../CGC/gc.o remalloc.o
# Main sources...
SOURCES = copyalloc.c copy.c arith.c basic.c chars.c error.c \
main.c modules.c set.c streams.c \
t2.c vectors.c bootstrap.c lists.c \
class.c ngenerics.c \
symboot.c modboot.c toplevel.c root.c specials.c \
calls.c ccc.c macros.c system.c semaphores.c state.c \
sockets.c sio.c modops.c lamport.c bvecs2.c
OBJECTS = copyalloc.o copy.o arith.o basic.o chars.o error.o \
main.o modules.o set.o streams.o \
t2.o vectors.o bootstrap.o lists.o \
class.o ngenerics.o \
symboot.o modboot.o toplevel.o root.o specials.o \
calls.o ccc.o macros.o system.o semaphores.o state.o \
sockets.o sio.o modops.o lamport.o bvecs2.o
HDRS = bootstrap.h generics.h modules.h specials.h toplevel.h \
calls.h global.h ngenerics.h state.h vectors.h \
ccc.h lamport.h structs.h version.h \
class.h lex_global.h root.h symboot.h y.tab.h \
copy.h runtime.h syssockets.h funcalls.h weak.h \
defs.h lists.h semaphores.h system_p.h yyfudge.c allocate.h \
error.h macros.h sio.h system_t.h bvf.h modops.h garbage.h \
format.h modboot.h slots.h table.h threads.h iset.h sockets.h \
interpret.h bytecodes.h t2.h reader.h
COSOURCES = ${MACHINEABBREV}-swch.s threads.c
COOBJECTS = ${MACHINEABBREV}-swch.o threads.o
DISTRIBCO = sun3-swch.s sun4-swch.s ard-swch.s clip-swch.s any-swch.s i860-swch.s \
386-swch.s irx-swch.s Makefile Makefile.386
KERNELLISP= defs.em extras0.em initcode.em macros0.em standard0.em sockets.em semaphores.em bitvecs.em
# Lisp object file
LISPOBJECTS = LispSrc/all-lisp.o
ISOURCES = interpret.c
IHDRS = bytecodes.h interpret.h
IOBJECTS = interp.o
# Lisp object file
LISPOBJECTS = LispSrc/all-lisp.o
you: ${OBJECTS} ${COOBJECTS} ${READEROBJECTS} ${ELVIRAOBJECTS} ${IOBJECTS}
-touch you
rm you
${CC} ${LINKFLAGS} -o you ${OBJECTS} ${COOBJECTS} \
${READEROBJECTS} ${IOBJECTS} ${ELVIRAOBJECTS} ${LIBS}
echo
test: ${OBJECTS} ${COOBJECTS} ${READEROBJECTS} ${ELVIRAOBJECTS} ${IOBJECTS}
-touch test
rm test
${CC} -yinitialise_readstr -o test ${OBJECTS} ${COOBJECTS} \
${READEROBJECTS} ${IOBJECTS} ${ELVIRAOBJECTS} ${LIBS}
echo
proyou: ${OBJECTS} ${COOBJECTS} ${READEROBJECTS} ${ELVIRAOBJECTS}
${CC} -p -o proyou ${OBJECTS} ${COOBJECTS} \
${READEROBJECTS} ${ELVIRAOBJECTS} ${LIBS}
echo
elvira: ${OBJECTS} ${COOBJECTS} ${READEROBJECTS} ${IOBJECTS}
ld -r -o feel_elvira.o ${OBJECTS} ${COOBJECTS} ${READEROBJECTS} ${IOBJECTS}
mv feel_elvira.o ../Objs/${ARCH}-elvira.o
echo
feel_elvira.o: elvira
feel: feel_elvira.o ${LISPOBJECTS}
(cd LispSrc; make all-lisp.o)
ecc -o feel ${LISPOBJECTS}
echo
reader:
${LEX} comp.lex
${YACC} test.yac
# Sicko bytecode hacking
# preprocess explicitly, then compile the result, after stripping out
# cpp control codes. Ugh. Makes debugging easier though.
interp.o: interpret.c bytecodes.h interpret.h
-${CC} -c interpret.c ${FLAGS} \
-DMACHINE_${MACHINE} \
-DMODULE_PATH=\"${MODULE_PATH}\" \
-DLOAD_PATH_NAME=\"${LOAD_PATH_NAME}\" \
-DSEMAPHORES_${SEMAPHORES} \
-DMAKE_DATE="\"${DATE}\"" -o interp.o
#| grep -v "^#" > interp.c
#${CC} ${FLAGS} ${BCIOPTFLAGS} -c interp.c
#mv interpret.o interp.o
#reader hacking
lex.yy.c: ${READERSOURCES}
flex -I -Sfeelflex.skl feelflex.lex
.c.o:
${CC} -c $*.c ${FLAGS} \
-DMACHINE_${MACHINE} \
-DMODULE_PATH=\"${MODULE_PATH}\" \
-DLOAD_PATH_NAME=\"${LOAD_PATH_NAME}\" \
-DSEMAPHORES_${SEMAPHORES} \
-DMAKE_DATE="\"${DATE}\""
install: install.${MACHINE}
install.BSD: you
-mkdir ${BASE}/lib
cp you ${BASE}/lib/you.`arch`
install.ANY: you
-mkdir ${BASE}/lib
cp you ${BASE}/lib/you.`arch`
install.SYSTEMV: you
-mkdir ${BASE}/lib
cp you ${BASE}/lib/you.`arch`.sysv
version: ${SOURCES} ${COSOURCES} ${READERSOURCES} ${ELVIRASOURCES} ${DISTRIBCO} ${HDRS} ${KERNELLISP}
rcsfreeze
tar: ${SOURCES} ${COSOURCES} ${READERSOURCES} ${ELVIRASOURCES} ${DISTRIBCO} ${READERIMMOBJS} \
${HDRS} ${KERNELLISP} ${ISOURCES} ${IHDRS}
tar chf - ${SOURCES} ${COSOURCES} ${READERSOURCES} ${ELVIRASOURCES} \
${DISTRIBCO} ${HDRS} ${KERNELLISP} ${ISOURCES} ${IHDRS} ${READERIMMOBJS} \
| compress > you.tar.Z
# Some systems have X, others have (g)cc -M. Makedepend in pref.
depend: ${SOURCES} ${HDRS} ${READERSOURCES} ${COSOURCES}
makedepend -s "# DO NOT DELETE THIS LINE" -- ${FLAGS} -- ${SOURCES} ${COSOURCES} \
|| (sed -n -e '1,/^# DO NOT DELETE/d' < Makefile > tmp ; \
for i in ${SOURCES} ${COSOURCES} ; do ${CPP} ${FLAGS} -M $$i; done >> tmp ;\
mv tmp Makefile)
clean:
rm ${OBJECTS} ${COOBJECTS} ${READEROBJECTS} you
${MACHINE}-coroutine.o: ${MACHINE}-coroutine.s
${CC} -c ${MACHINE}-coroutine.s
#if there is odd stuff below this line, remove it and do make depend.
# if make depend fails don't worry. It only gets the header dependencies
# right.
# DO NOT DELETE THIS LINE